package com.lwd.boot.study.spi;

import org.springframework.core.io.support.SpringFactoriesLoader;

import java.util.List;

/**
 * @Author: 刘东（挂兰）
 * @Date: 2024/1/1 08:44:01
 * @Description:
 */
public class TestSpringFactories {
	public static void main(String[] args) {
		// //获取指定接口指定的各个实现类的类名列表
		List<String> classNameList = SpringFactoriesLoader.loadFactoryNames(Animal.class, null);
		System.out.println("classNameList = " + classNameList);

		// 获取指定接口指定的各个实现类的实例列表，本质是通过反射调用实现类的无参构造器创建实例
		List<Animal> instanceList = SpringFactoriesLoader.loadFactories(Animal.class, null);
		for (Animal animal : instanceList) {
			animal.show();
		}
	}
}
